package com.personal.portal.common.entity;

/**
 * 技能等级工具类
 *
 * @author zhanghui
 * @version 1.0.0
 * @since 2025-11-12
 */
public class SkillLevel {

    /**
     * 入门
     */
    public static final String INTRODUCTION = "入门";

    /**
     * 初级等级
     */
    public static final String BEGINNER = "初级";

    /**
     * 中级等级
     */
    public static final String INTERMEDIATE = "中级";

    /**
     * 高级等级
     */
    public static final String ADVANCED = "高级";

    /**
     * 专家等级
     */
    public static final String EXPERT = "专家";

    private SkillLevel() {
        // 工具类私有构造器
    }

    /**
     * 根据分数自动计算技能等级
     *
     * @param score 技能分数 (0-100)
     * @return 技能等级字符串
     * <p>
     * 等级划分：
     * - 初级：0-40分
     * - 中级：41-70分
     * - 高级：71-90分
     * - 专家：91-100分
     */
    public static String calculateLevel(int score) {
        if (score < 0 || score > 100) {
            throw new IllegalArgumentException("技能分数必须在0-100之间");
        }

        if (score <= 20) {
            return INTRODUCTION;
        } else if (score <= 40) {
            return BEGINNER;
        } else if (score <= 70) {
            return INTERMEDIATE;
        } else if (score <= 90) {
            return ADVANCED;
        } else {
            return EXPERT;
        }
    }

    /**
     * 根据技能等级获取对应的分数范围
     *
     * @param level 技能等级
     * @return 分数范围描述
     */
    public static String getScoreRange(String level) {
        if (BEGINNER.equals(level)) {
            return "0-40分";
        } else if (INTERMEDIATE.equals(level)) {
            return "41-70分";
        } else if (ADVANCED.equals(level)) {
            return "71-90分";
        } else if (EXPERT.equals(level)) {
            return "91-100分";
        } else {
            return "未知";
        }
    }

    /**
     * 获取所有支持的技能等级列表
     *
     * @return 技能等级数组
     */
    public static String[] getAllLevels() {
        return new String[]{BEGINNER, INTERMEDIATE, ADVANCED, EXPERT};
    }
}